package com.hikari.cloud.base.rabbitmq;

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class QueueConfig {


    //直连队列
    public static final String QUEUE_DIRECT_NAME = "direct_queue";

    //广播队列1,2：因为广播指的是广播到所有绑定到此路由的对列
    public static final String QUEUE_FANOUT_NAME1 = "fanout_queue1";
    public static final String QUEUE_FANOUT_NAME2 = "fanout_queue2";

    //匹配队列
    public static final String COM_HIKARI_QUEUE_DEVICE_MINA = "com.hikari.queue.device.mina";

    public static final String COM_HIKARI_QUEUE_APP_MINA = "com.hikari.queue.app.mina";


    /***
     * 创建消息队列，这队列是会被注册到【交换机--》路由键】里面
     * @return
     */
    @Bean
    public Queue DirectQueue() {
        /**
         durable="true" 持久化 rabbitmq重启的时候不需要创建新的队列
         exclusive  表示该消息队列是否只在当前connection生效,默认是false
         auto-delete 表示消息队列没有在使用时将被自动删除 默认是false
         */
        return new Queue(QUEUE_DIRECT_NAME, true, false, false);
    }

    /***
     * 广播队列 1
     * @return
     */
    @Bean
    public Queue fanoutQueue1() {
        /**
         durable="true" 持久化 rabbitmq重启的时候不需要创建新的队列
         exclusive  表示该消息队列是否只在当前connection生效,默认是false
         auto-delete 表示消息队列没有在使用时将被自动删除 默认是false
         */
        return new Queue(QUEUE_FANOUT_NAME1, true, false, false);
    }

    /***
     * 广播队列 2
     * @return
     */
    @Bean
    public Queue fanoutQueue2() {
        /**
         durable="true" 持久化 rabbitmq重启的时候不需要创建新的队列
         exclusive  表示该消息队列是否只在当前connection生效,默认是false
         auto-delete 表示消息队列没有在使用时将被自动删除 默认是false
         */
        return new Queue(QUEUE_FANOUT_NAME2, true, false, false);
    }


    /***
     * 匹配队列 - liu
     * @return
     */
    @Bean
    public Queue topicQueueDeviceMina() {
        /**
         durable="true" 持久化 rabbitmq重启的时候不需要创建新的队列
         exclusive  表示该消息队列是否只在当前connection生效,默认是false
         auto-delete 表示消息队列没有在使用时将被自动删除 默认是false
         */
        return new Queue(COM_HIKARI_QUEUE_DEVICE_MINA, true, false, false);
    }

    /***
     * 匹配队列 - liu
     * @return
     */
    @Bean
    public Queue topicQueueAPPMina() {
        /**
         durable="true" 持久化 rabbitmq重启的时候不需要创建新的队列
         exclusive  表示该消息队列是否只在当前connection生效,默认是false
         auto-delete 表示消息队列没有在使用时将被自动删除 默认是false
         */
        return new Queue(COM_HIKARI_QUEUE_APP_MINA, true, false, false);
    }


}